//
//  MBNewOfflineDataManager.h
//  iNaviCore
//
//  Created by  sunxirui on 16/9/26.
//  Copyright © 2016年 Mapbar. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "MBNewOfflineRecord.h"
/**
 *
 *  离线数据管理代理
 */
@protocol MBNewOfflineDataDelegate <NSObject>
@optional
/**
 *
 *  下载离线数据状态跟踪
 *  @param  record   离线下载记录信息
 *  
 */
- (void)onGetNewOfflineDataState:(MBNewOfflineRecord*)record;
@end

typedef void (^MBDownloadListBlock)(NewDownloadState updateState);

@interface MBNewOfflineDataManager : NSObject<NSURLSessionDownloadDelegate>{
    MBDownloadListBlock _downloadListBlock;  //  下载列表信息
}
/**
 *
 *  是否有新数据更新
 */
@property(nonatomic,assign) BOOL isNew;

/**
 *
 *  下载任务dict (val:record key:url)，用于管理各个城市下载中任务的状态
 */
@property (nonatomic, retain) NSMutableDictionary* downloadTaskDict;
/**
 *
 *  当前下载的任务
 */
@property (nonatomic, retain) NSURLSession* currentBackgroundSession;
/**
 *
 *  当前下载的任务设置
 */
@property (nonatomic, retain) NSURLSessionConfiguration* configuration;
/**
 *
 *   获取唯一实例
 */
+(instancetype)sharedOfflineDataManager;
/**
 *
 *   代理
 */
@property(nonatomic,assign) id<MBNewOfflineDataDelegate> delegate;
/**
 *
 *  开始下载离线数据，
 *  @param  record     待下载的离线数据信息
 *  
 */
-(void)start:(MBNewOfflineRecord*)record;
/**
 *
 *  暂停离线数据
 *  @param  record     待暂停的离线数据信息
 *  
 */
-(void)pause:(MBNewOfflineRecord*)record;
/**
 *
 *  恢复暂停离线数据
 *  @param  record     待暂停的离线数据信息
 *  
 */
-(void)resume:(MBNewOfflineRecord*)record;
/**
 *
 *  暂停所有下载
 *  
 */
-(void)pauseAll;
/**
 *
 *  移除离线数据
 *  @param  record     待移除的离线数据信息
 *  
 */
-(void)remove:(MBNewOfflineRecord*)record;
/**
 *  获得离线数据的记录信息，即数据下载列表，网络
 *  @param  block 数据的记录信息block(回调)
 *  
 */
-(void)getOfflineRecordList:(MBDownloadListBlock)block;
// 没有网络的时候使用
-(NSArray*)getLocalRecordList;
/**
 *  获得离线数据的记录信息，即数据下载列表，缓存。
 */
@property(nonatomic,readonly) NSArray* offlineRecordList;

@end
